Android Tips #22 Nexus7 に対応させるときの注意点
Nexus7 を購入しました
弊社でも巷で噂の Nexus7 を購入しました!
7インチというスマホより大きな画面に、最新OSが搭載され、安価。とっても良いですね!
というわけで今回は Nexus7 に対応したAndroidアプリを作るにあたっていくつか注意点を Android Developers Blog の記事を参考に見ていきたいと思います!
スクリーン
解像度は tvdpi
Nexus7 のスクリーンの解像度のグループは、いままであまり使われることがなかった tvdpi になっています。 そのため tvdpi のアセットファイル(画像など)をすべて用意する必要があるかと思いきや…そうではありません。 tvdpi に表示するアセットファイルは、システム側で hdpi のアセットファイルをスケールして表示してくれます。 なので Nexus7 に表示されるアセットは hdpi のもの!という認識をしておけば基本的にOKです。
9-patchにご注意
アセットファイルは基本的に hdpi のものがスケールされて表示されますが 9-patchをあてているアセットは固定領域の指定に注意が必要です。どういう注意が必要か実際の動作を確認しながら見ていきましょう。
下図はDroidくんが固定で表示されるように設定したアセットファイルです。この画像の固定領域の範囲はDroidくんの超ギリギリから始めています。
これを Nexus7 で表示させるとこうなります。
ああああああああ。なんか腕びよーんしてます。これは hdpi のアセットファイルから縮小されるときに 9-patch の指定範囲にズレが生じてしまうためです。
こうならないように 9-patch の固定領域の指定は多めにとっておくようにしましょう。
レイアウト
7インチ用にレイアウトを分ける
Nexus7 のスクリーンは7インチという、今までにあまりない大きさですね。 スマホよりは広く、タブレットよりは狭い。 そんな画面サイズなので、レイアウトも個別に指定し、表示する情報量への配慮は欠かせません。 7インチ用にレイアウトを別にしたい場合は、以下のようにレイアウトXMLの配置場所を変えます。
res/layout-sw600dp/activity_home.xml
sw600dp というのは、最小幅 (Smallest Width) が 600dp である、という意味です。
Nexus7 のスクリーンサイズは 600 × 960 dp なので、上記指定のレイアウトが適用されるようになります。
さらに10インチもわけたい!という場合は以下のように配置します。
res/layout-sw720dp/activity_home.xml
7インチ用に dimens.xml を分ける
7インチの端末はスマホよりも文字サイズを大きくしないと見づらいことがあります。7インチの場合のみ文字サイズを大きく指定するには、以下のようにレイアウト指定と同様XMLの配置場所を変えます。そうすることで、スマホ用と7インチ用で文字サイズの指定を分けることができます。
res/values-sw600dp/dimens.xml
ハードウェア
uses-permission でインストールを制限する
Nexus7 に電話機能はありません。また、カメラはフロントカメラしかありません。そのため uses-permission に android.permission.CALL_PHONE や android.permission.CAMERA の指定があるアプリは正常に動作しない可能性があるので注意しましょう。 アプリをインストールできないようにするには、以下のように uses-feature を指定します。
電話機能がない端末にインストールできないようにする
<uses-feature android:name="android.hardware.telephony"/>
電話機能がない端末もインストールできるようにする(必ずしも必要ではない)
<uses-feature android:name="android.hardware.telephony" android:required="false"/>
インストール可能な端末を制限する方法は こちらの記事 もあわせてご覧ください。
まとめ
Nexus7 は他の Android 端末と比べると安価なところもあり、かなり人気の端末になっています。そのため、もうリリースされているアプリも、開発中のアプリも、ぜひ Nexus7 に対応しておきたいところです。アプリによっては表示がかなり異なってくる可能性もあるので、まずは一度確認しておきましょう。